﻿/*
 * DoiBongDataAccess.cs
 * 
 * author Trần Thái Bình
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;
using System.Data.OleDb;
using InfoLayer;

namespace DataAccessLayer
{
    /// <summary>
    /// Dùng thao tác dữ liệu trên table DOIBONG
    /// </summary>
    public class DoiBongDataAccess: DataAccessAbstract
    {
        /// <summary>
        /// Lấy danh sách record trong table DOIBONG
        /// </summary>
        /// <returns>ArrayList</returns>
        public List<DoiBongInfo> LayDanhSach()
        {
            List<DoiBongInfo> kq = new List<DoiBongInfo>();
            DoiBongInfo Info;
            //Viết câu lênh SQL
            _sqlString = "SELECT * FROM DOIBONG";
            //Kết nối CSDL
            _connection = ConnectionData();
            //Thực hiên câu try vấn
            _command = new OleDbCommand(_sqlString, _connection);
            _reader = _command.ExecuteReader();
            //Đọc các record
            while (_reader.Read())
            {
                Info = new DoiBongInfo();
                try
                {
                    Info.MaDoiBong = _reader["MaDoiBong"].ToString();
                    Info.TenDoiBong = _reader["TenDoiBong"].ToString();
                    Info.MaSanBong = _reader["MaSanBong"].ToString();
                    Info.SoTranThang = Convert.ToInt32(_reader["SoTranThang"].ToString());
                    Info.SoTranHoa = Convert.ToInt32(_reader["SoTranHoa"].ToString());
                    Info.SoTranThua = Convert.ToInt32(_reader["SoTranThua"].ToString());
                    Info.SoBanThua = Convert.ToInt32(_reader["SoBanThua"].ToString());
                    Info.Hang = Convert.ToInt32(_reader["Hang"].ToString());
                }
                catch
                {
                    _reader.Close();
                    _command.Cancel();
                    _connection.Close();
                    throw new Exception("Lỗi kết nối dữ liệu");
                }

                kq.Add(Info);
            }
            //Đóng tất cả các kết nối
            _reader.Close();
            _command.Cancel();
            _connection.Close();

            return kq;
        }

        /// <summary>
        /// Đếm số đội bóng trong table DOIBONG
        /// </summary>
        /// <param name="MaDoiBong"></param>
        /// <returns>int </returns>
        public int SoDoiBong()
        {
            int ss = 0;
            //Viết câu SQL
            _sqlString = "SELECT COUNT(*) FROM DOIBONG";
            //Kêt nối cơ sở dữ liệu
            _connection = ConnectionData();
            try
            {
                //Thực hiện câu lệnh SQL
                _command = new OleDbCommand(_sqlString, _connection);
                _command.ExecuteNonQuery();
                //Lấy dữ liệu
                _reader = _command.ExecuteReader();
                _reader.Read();
                ss = Convert.ToInt32(_reader[0].ToString());
            }
            catch
            {
                _reader.Close();
                _command.Cancel();
                _connection.Close();
                throw new Exception("Lỗi kết nối dữ liệu");
            }
            return ss;

        }

        /// <summary>
        /// Tự động cấp phát mã đội bóng
        /// </summary>
        /// <param name="MaDoiBong"></param>
        /// <returns>string</returns>
        public string CapPhatMaDoiBong()
        {
            string maDB = "";
            int stt = SoDoiBong() + 1;
            maDB = "MDB" + stt.ToString();
            return maDB;
        }

        /// <summary>
        /// Chèn dữ liệu vào table DOIBONG
        /// </summary>
        /// <param name="ctInfo"></param>
        public void Insert(ref DoiBongInfo ctInfo)
        {            
            //Viết câu SQL
            _sqlString = "INSERT INTO DOIBONG VALUES('" +
                ctInfo.MaDoiBong + "','" +
                ctInfo.TenDoiBong + "','" +
                ctInfo.MaSanBong + "'," +
                ctInfo.SoTranThang + "," +
                ctInfo.SoTranHoa + "," +
                ctInfo.SoTranThua + "," +
                ctInfo.SoBanThua + "," +
                ctInfo.Hang + ")";
            //Kết nối CSDL
            _connection = ConnectionData();

            try
            {
                //Thực thi câu lệnh SQL
                _command = new OleDbCommand(_sqlString, _connection);
                _command.ExecuteNonQuery();
            }
            catch
            {
                _reader.Close();
                _command.Cancel();
                _connection.Close();
                throw new Exception("Lỗi kết nối dữ liệu");
            }
            //Đóng kết nối
            _reader.Close();
            _command.Cancel();
            _connection.Close();
        }
    }
}
